package the.broccoli.uc.service;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.util.CollectionUtils;
import org.wisteria.framework.web.mvc.service.ISuperService;
import the.broccoli.uc.dto.RoleTree;
import the.broccoli.uc.entity.Role;
import the.broccoli.uc.entity.UserRole;

import java.util.List;

/**
 * <p>
 * 角色 服务类
 * </p>
 *
 * @author lei.liu
 * @since 2018-10-29
 */
public interface IRoleService extends ISuperService<Role> {

    /**
     * 是否管理员类型的角色
     * @param roleId
     * @return
     */
    boolean isAdmin(String roleId);

    /**
     * 是否包含管理员类型的角色
     * @param roleIdList
     * @return
     */
    boolean isAdmin(List<String> roleIdList);

    /**
     * 获取角色树
     * @param roleIdList
     * @return
     */
    List<RoleTree> getTree(List<String> roleIdList);

    List<String> getRoleIdList(List<String> parentRoleIdList);

    /**
     * 获取角色树
     * @param roleIdList
     * @return
     */
    List<RoleTree> getTree(List<String> roleIdList, List<String> rootRoleIdList);

    /**
     * 创建且获取租户的管理员角色
     */
    Role addAndGetTenantAdmin(Integer tenantId, String operatorId, String operatorName);

    /**
     * 获取租户管理员角色
     * @param tenantId  租户ID
     * @return  角色
     */
    Role getTenantAdmin(Integer tenantId);
}
